﻿using System;
using System.Web.UI;
using Acamps.Framework.BancoDados;
using Acamps.Framework.NegocioRegras;
using Acamps.Framework.Util;
using Acamps.Web.NegocioWeb;

namespace Acamps.Web.controles
{
    public partial class Fichas : System.Web.UI.UserControl
    {

        public AcessoWeb acessoWeb = new AcessoWeb();
        public delegate void SalvoEventHandler();
        public event SalvoEventHandler salvo;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                CarregarCombos();
                SetarControlesInscrevase();
            }
            if (Session["possivelCampista"] != null)
            {
                lblMsgPossivel.Visible = true;
                ScriptManager.RegisterClientScriptBlock(this.Page, this.Page.GetType() , "OcultarPanel", "window.setTimeout(function() {OcultarPanel();}, 5000);", true);
            }
        }

        private void SetarControlesInscrevase()
        {
            var acampamento = acessoWeb.AcampamentoNegocioWeb.RecuperarUltimoAcampamentoVigente();

            if (acampamento != null)
            {
                lblDescricaoInscrevase.Text = acampamento .Descricao;
                lblPeriodo.Text = "de " + acampamento.DtInicio.Value.ToShortDateString() + " a " +
                                  acampamento.DtFim.Value.ToShortDateString();
                lblPreenchimentoAte.Text = "O preenchimento desta Ficha deverá ser feita, \"IMPRETERIVELMENTE\", até " +
                                           acampamento.DtMaxima.Value.ToShortDateString();
                hidAcampamento.Value = acampamento.Id.ToString();
                btnSalvar.Visible = false;
            }
            else
            {
                lblPeriodo.Text =
                    "No momento não estamos com acampamento previsto, mais ao lado você pode deixa seu contato para avisarmos. " +
                    "Agredecemos sua compreensão.";

                dvFormulario.Visible = false;
                lblVenhaViver.Visible = false;
                lblDescricao.Visible = false;
                lblIdade.Visible = false;

                dvPossivelCampista.Visible = true;
                btnSalvarCampista.Visible = false;
            }


        }

        private void Carrega(Campista campista, Ficha ficha)
        {
            campista.Nome = txtNome.Text;
            campista.Endereco = txtEndereco.Text;
            campista.Fixo = txtFixo.Text;
            campista.Celular = txtCelular.Text;
            campista.DataNascimento = DateTime.Parse(txtDataNascimento.Text);
            campista.Email = txtEmail.Text;
            campista.Equipe = false;
            campista.Apelido = txtApelido.Text;
            campista.Sexo = rbtSexoMasculino.Checked ? "M" : "F";
            campista.Cep = txtCep.Text;
            campista.Cidade = txtCidade.Text;
            campista.Bairro = txtBairro.Text;
            campista.Rg = txtRg.Text;
            campista.IdEstadoCivil = Guid.Parse(ddlEstadoCivil.SelectedValue);
            campista.IdTipoSanguineo = Guid.Parse(ddlTipoSanguineo.SelectedValue);
            campista.Cpf = txtCpf.Text;
            campista.Interessado = false;
            campista.Descadastrado = true;

            ficha.Paroquia = txtParoquia.Text;
            ficha.BairroParoquia = txtBairroParoquia.Text;
            ficha.Batizado = rbtnBatizadoSim.Checked;
            ficha.PrimeiraComunhao = rbtnComunhaoSim.Checked;
            ficha.Crisma = rbtnCrimaSim.Checked;
            ficha.Permanencia = pemaneceSim.Checked;
            ficha.Movimento = txtMovimento.Text;
            ficha.RestricaoFisica = txtRestricaoFisica.Text;
            ficha.Medicamento = txtMedicamento.Text;
            ficha.Acampou = txtParticipou.Text;
            ficha.Dieta = txtDieta.Text;
            ficha.ComoEncontrou = txtEncontrou.Text;
            ficha.Indicacao = txtIndicacao.Text;
            ficha.Conhece = txtConhece.Text;
            ficha.Importado = false;
            ficha.Alergia = txtAlergia.Text;
        }

        private void CarregarCombos()
        {
            Utilidades.SetaCombo(ddlEstadoCivil, acessoWeb.EstadoCivilNegocioWeb.ListarEstadoCivil(true), "Descricao", "Id");
            Utilidades.SetaCombo(ddlTipoSanguineo, acessoWeb.TipoSanguineoNegocioWeb.ListarTipoSanguineo(true), "Descricao", "Id");
        }

        protected void btnSalvar_OnClick(object sender, EventArgs e)
        {
            Campista campista = null;

            campista = new Campista
                        {
                            Nome = txtNomePossivelCampista.Text,
                            Email = txtEmailPossivelCampista.Text,
                            Interessado = true
                        };

            campista = acessoWeb.CampistaNegocioWeb.Salvar(campista);

            if (campista != null)
            {
                Session["possivelCampista"] = true;
                Response.Redirect("~/Default.aspx#!/fichas");
            }
        }

        protected void btnSalvarCampista_OnClick(object sender, EventArgs e)
        {
            Campista campista = null;
            campista = new Campista();
            Ficha ficha = new Ficha();

            Carrega(campista, ficha);

            try
            {
                campista = acessoWeb.CampistaNegocioWeb.Salvar(campista, ficha, Guid.Parse(hidAcampamento.Value));
                Session["ficha"] = acessoWeb.FichasNegocioWeb.RetornarFicha(campista.Id);
                salvo();
            }
            catch (Exception ex)
            {

            }
        }
    }
}